// API - 表格模板

import { http } from "@/utils/http";
import { errorReject } from "@/utils/truncate";
import { message } from "@/utils/message";

interface ListResult extends HttpResponse {
  data?: {
    /** 列表数据 */
    list: TempTableInfo[];
    /** 总条目数 */
    total?: number;
    /** 每页显示条目个数 */
    pageSize?: number;
    /** 当前页数 */
    currentPage?: number;
  };
}

interface DetailResult extends HttpResponse {
  data?: TempTableInfo;
}

export type TempTableCatalogs = {
  id: Id;
  name: string | null;
};

export type TempTableInfo = {
  id: Id;
  catalogid: Id;
  title: string;
  author: string;
  remark: string;
  sort: string | number;
  status: boolean;
  createTime: string;
};

/**
 * 获取分页列表
 *
 * @param data 请求参数
 * @returns
 */
export const getTempTablePageList = async (data?: object) => {
  return errorReject(
    http.request<ListResult>("post", "/template/table/page", {
      data
    }),
    error => {
      message(error.message, { type: "error" });
    }
  );
};

/**
 * 创建信息
 *
 * @param data 请求参数
 * @returns
 */
export const addTempTableDetail = (data?: object) => {
  return errorReject(
    http.request<DetailResult>("post", "/template/table", {
      data
    }),
    error => {
      message(error.message, { type: "error" });
    }
  );
};

/**
 * 获取信息
 *
 * @param id 请求ID
 * @param params 请求参数
 * @returns
 */
export const getTempTableDetail = (id: Id, params?: object) => {
  return errorReject(
    http.request<DetailResult>("get", "/template/table/" + id, {
      params
    }),
    error => {
      message(error.message, { type: "error" });
    }
  );
};

/**
 * 更新信息
 *
 * @param id 请求ID
 * @param data 请求参数
 * @returns
 */
export const editTempTableDetail = (id: Id, data?: object) => {
  return errorReject(
    http.request<DetailResult>("put", "/template/table/" + id, {
      data
    }),
    error => {
      message(error.message, { type: "error" });
    }
  );
};

/**
 * 切换状态
 *
 * @param id 请求ID
 * @param data 请求参数
 * @returns
 */
export const setTempTableStatus = (id: Id, data?: object) => {
  return errorReject(
    http.request<HttpResponse>("put", "/template/table/" + id + "/status", {
      data
    }),
    error => {
      message(error.message, { type: "error" });
    }
  );
};

/**
 * 删除信息
 *
 * @param id 请求ID
 * @param data 请求参数
 * @returns
 */
export const delTempTableDetail = (id: Id, data?: object) => {
  return errorReject(
    http.request<HttpResponse>("delete", "/template/table/" + id, {
      data
    }),
    error => {
      message(error.message, { type: "error" });
    }
  );
};

/**
 * 批量删除信息
 *
 * @param id 请求ID
 * @param data 请求参数
 * @returns
 */
export const batchDelTempTableDetail = (data?: object) => {
  return errorReject(
    http.request<HttpResponse>("delete", "/template/table", {
      data
    }),
    error => {
      message(error.message, { type: "error" });
    }
  );
};
